<?php

$config = Config::getInstance();

$dt_ini = $config->filter('dt-inicial');
$dt_fim = $config->filter('dt-final');

$loja   = $config->filter('loja');
if(empty($loja)){
    $lojas = $config->currentController->getAllLojas();
} else {
    foreach($loja as $lid){ $lojas[] = $config->currentController->getLoja($lid); }
}

echo '  <p class=\'name\'> Relatório Gerencial gerado em <b>'.date('d/m/Y').'</b> de 
        <b>'.$config->maskData($dt_ini).'</b> à <b>'.$config->maskData($dt_fim).'</b></p> ';

echo '<div class=\'content\'>';

echo '<table>';
echo '<thead>';
echo '<tr>';
echo '<th>DADO</th>';
$lojas_ids = array();
foreach($lojas as $l){ 
    $lojas_ids[] = $l->id;
    echo '<th>'.$l->sigla.'</th>'; 
}
echo '<th>TOTAL</th>';
echo '</tr>';
echo '</thead>';
echo '<tbody>';

row_lancamentos($lojas_ids, $dt_ini, $dt_fim);

row_parcelas_atrasadas($lojas_ids, $dt_ini, $dt_fim);

rows_cancelamentos($lojas_ids, $dt_ini, $dt_fim);

row_respasses($lojas_ids, $dt_ini, $dt_fim);

$despesas = row_despesas_entradas($lojas_ids, $dt_ini, $dt_fim, 0);

$receitas = row_despesas_entradas($lojas_ids, $dt_ini, $dt_fim, 1);

row_saldos($lojas_ids, $despesas, $receitas);

echo '</tbody>';
echo '</table>';

echo '</div>';

echo '<p class=\'map\'><b>CD</b>: Caixa Diário; <b>PC</b>: Prestação de Conta</p>';

function row_lancamentos($lojas_ids, $dt_ini, $dt_fim){
    
    include_once CONTROLLERS.'parcela.php';
    $parcela_controller = new ParcelaController();
    
    $config = Config::getInstance();
    
    echo '<tr>';
    echo '<td>LANÇAMENTOS</td>';
    $total = 0;
    foreach ($lojas_ids as $lojaid){
        $resumo = $parcela_controller->getResumoPagamentosInLoja($lojaid, $dt_ini, $dt_fim);
        $total += $resumo->total;
        echo '<td>R$ '.$config->maskDinheiro($resumo->total).'</td>';
    }
    echo '<td>R$ '.$config->maskDinheiro($total).'</td>';
    echo '</tr>';
}

function row_parcelas_atrasadas($lojas_ids, $dt_ini, $dt_fim){
    
    include_once CONTROLLERS.'parcela.php';
    $parcela_controller = new ParcelaController();
    
    $config = Config::getInstance();
    
    echo '<tr>';
    echo '<td>PARCELA ATRASADA</td>';
    $total = 0;
    foreach ($lojas_ids as $lojaid){
        $parcelas   = $parcela_controller->getParcelasAtrasdasInLoja($lojaid, $dt_ini, $dt_fim);
        $sum        = 0;
        foreach($parcelas as $p) { 
            $japago = $parcela_controller->getValorPagoOfParcela($p);
            $dif    = $p->valor - $japago;
            $sum   += $dif; 
        }
        $total += $sum;
        echo '<td>R$ '.$config->maskDinheiro($sum).'</td>';
    }
    echo '<td>R$ '.$config->maskDinheiro($total).'</td>';
    echo '</tr>';
}


function rows_cancelamentos($lojas_ids, $dt_ini, $dt_fim){
    
    include_once CONTROLLERS.'venda.php';
    $venda_controller = new VendaController();
    
//    $config = Config::getInstance();
    
    $totals = array('qtd' => 0/*, 'val' => 0*/);
    foreach ($lojas_ids as $lojaid){
       $cancelamentos   = $venda_controller->getCancelamentosByLoja($lojaid, $dt_ini, $dt_fim);
       $total_qtd       = count($cancelamentos);
       $totals[$lojaid]['qtd'] = $total_qtd;
//       $total_val = 0;
//       foreach($cancelamentos as $cancelamento){
//           $total_val += $venda_controller->getValorOfVenda($cancelamento->venda);
//       }
//       $totals[$lojaid]['val'] = $total_val;
//       
       $totals['qtd'] += $total_qtd;
//       $totals['val'] += $total_val;
    }
    
    echo '<tr>';
    echo '<td>Nº CANCELAMENTOS</td>';
    foreach ($lojas_ids as $lojaid){
        echo '<td>'.$totals[$lojaid]['qtd'].'</td>';
    }
    echo '<td>'.$totals['qtd'].'</td>';
    echo '</tr>';
//    
//    echo '<tr>';
//    echo '<td>VALOR CANCELAMENTOS</td>';
//    foreach ($lojas_ids as $lojaid){
//        echo '<td>R$ '.$config->maskDinheiro($totals[$lojaid]['val']).'</td>';
//    }
//    echo '<td>R$ '.$config->maskDinheiro($totals['val']).'</td>';
//    echo '</tr>';
}


function row_respasses($lojas_ids, $dt_ini, $dt_fim){
    
    include_once CONTROLLERS.'repasse.php';
    $repasse_controller = new RepasseController();
    
    echo '<tr>';
    echo '<td>Nº REPASSES </td>';
    $total  = 0;
    $datas  = array( 'dt-chegada', 'dt-recebimento-conserto', 'dt-envio-conserto', 'dt-envio-cliente');
    foreach ($lojas_ids as $lojaid){
        $qtd = count($repasse_controller->getRepassesRange(
            $dt_ini, $dt_fim, $datas, null, $lojaid
        ));
        $total += $qtd;
        echo '<td>'.$qtd.'</td>';
    }
    echo '<td>'.$total.'</td>';
    echo '</tr>';
}

function row_despesas_entradas($lojas_ids, $dt_ini, $dt_fim, $tipo /*0 -> saida, 1-> entrada*/){
    
    include_once CONTROLLERS.'despesa.php';
    include_once CONTROLLERS.'naturezaDespesa.php';
    include_once CONTROLLERS.'caixa.php';
    include_once CONTROLLERS.'veiculo.php';
    $despesas_controller= new DespesaController();
    $natureza_controller= new NaturezaDespesaController();
    
    $all_naturezas      = $tipo == 0 ? $natureza_controller->getAllNaturezasSaidas()
                                     : $natureza_controller->getAllNaturezasEntradas();
    $rows               = array();
    $despesas_lojas     = array();
    foreach($lojas_ids as $lojaid){ $despesas_lojas[$lojaid] = 0; }
    foreach($all_naturezas as $natureza){
        $row = array('natureza' => $natureza->nome, 'total' => 0, 'lojas' => array(),  'origem' => 'CD');
        foreach($lojas_ids as $lojaid){
            $despesas   = $despesas_controller->getDespesaByNaturezaInLoja($natureza, $lojaid, $dt_ini, $dt_fim);
            $sum        = 0;
            foreach($despesas as $d){ $sum += $d->valor; }
            $row['lojas'][$lojaid]      = $sum;
            $row['total']              += $sum;
            $despesas_lojas[$lojaid]   += $sum;
        }
        
        $rows[] = $row;
    }
    
    $config = Config::getInstance();
    
    echo '<tr class=\'enfases\' id=\'total-'.$tipo.'\' title=\'Clique para maximizar ou minimizar\'>';
    if($tipo == 0) { 
        echo '<td>'.mescled_cell('TOTAL DE DESPESAS', 'ORIGEM').'</td>';
    } else {
        echo '<td>'.mescled_cell('TOTAL DE RECEITAS', 'ORIGEM').'</td>';
        
        include_once CONTROLLERS.'prestacaoConta.php';
        include_once CONTROLLERS.'tipoPagamento.php';
        $prestacaoController    = new PrestacaoContaController();
        $tipoPagController      = new TipoPagamentoController();
        $tiposNaoDin            = $tipoPagController->tiposNaoDinheiro(false);
        foreach($tiposNaoDin as $tipoPag) {
            $row = array('natureza' => $tipoPag->nome, 'total' => 0, 'lojas' => array(), 'origem' => 'PC');
            foreach ($lojas_ids as $lojaid) {
                $itens  = $prestacaoController->getItensRangeData($lojaid, $tipoPag->id, $dt_ini, $dt_fim);;
                $sum    = 0; 
                foreach($itens as $i) { $sum += $i->valor; }
                $row['lojas'][$lojaid]      = $sum;
                $row['total']              += $sum;
                $despesas_lojas[$lojaid]   += $sum;
            }
            $rows[] = $row;
        }
        
    }
    $total = 0;
    foreach ($lojas_ids as $lojaid){
        $total += $despesas_lojas[$lojaid];
        echo '<td>R$ '.$config->maskDinheiro($despesas_lojas[$lojaid]).'</td>';
    }
    echo '<td>R$ '.$config->maskDinheiro($total).'</td>';
    echo '</tr>';
    
    foreach($rows as $row){
        echo '<tr class=\'enfases-child\' parent=\'total-'.$tipo.'\'>';
        echo '<td>'.mescled_cell($row['natureza'], $row['origem']).'</td>';
        foreach($row['lojas'] as $val){
            echo '<td>R$ '.$config->maskDinheiro($val).'</td>';
        }
        echo '<td>R$ '.$config->maskDinheiro($row['total']).'</td>';
        echo '</tr>';
    }
    
    return $despesas_lojas;
    
}

function row_saldos($lojas_ids, $despesas, $receitas) {
    $config = Config::getInstance();
    $total = 0;
    echo '<tr id=\'saldo-row\'>';
    echo '<td>SALDO</td>';
    foreach($lojas_ids as $lojaid){ 
        $res = $receitas[$lojaid] - $despesas[$lojaid];
        echo '<td>R$ '.$config->maskDinheiro($res).'</td>';
        $total += $res;
    }
    echo '<td>R$ '.$config->maskDinheiro($total).'</td>';
    echo '</tr>';
}

function mescled_cell($cols) {
    $res = '<table class=\'mescled\'>';
    $res .= '<tr>';
    foreach(func_get_args() as $arg){ $res .= '<td>'.$arg.'</td>';}
    $res .= '</tr>';
    $res .= '</table>';
    return $res;
}

?>
<style>
.content table {text-align: center; width: 100%;}
.content table thead th { background: gray; color: white; padding: 5px; border: #666 solid 1px;}
.content tbody tr td { padding: 5px; border-bottom: lightgray solid 1px; border-left: lightgray solid 1px; }
.content tbody tr:nth-child(even) { background: #eee; }
.content tbody tr.enfases{background: green;color: white;}
p.map{font-size: 10pt; color: gray; margin: 5px 5px;}
.mescled tr td:last-child{width: 100px;}
.mescled tr td {border-bottom: none !important; padding: 0 !important;}
@media screen {
    .enfases-child {display: none;}
}
.enfases{cursor: pointer; font-weight: bolder;}
#total-0 {background-color: rgb(197, 102, 91);}
#total-1 {background-color: rgb(76, 171, 74);}
#saldo-row{background:gold; color:white; text-shadow: 0.5px 0.5px 0.5px black;}
</style>
<script src="script/jquery.js"></script>;
<script>
jQuery(function(){
    $('.enfases').click(function(){
        var pid = jQuery(this).attr('id');
        $('.enfases-child[parent='+pid+']').slideToggle('fast');
    });
})
</script>
